package hbt;

import negocio.CasaCentral;
import negocio.Cliente;
import negocio.ComparativaPrecios;
import negocio.CondicionDePago;
import negocio.Cotizacion;
import negocio.Descuentos;
import negocio.Factura;
import negocio.General;
import negocio.HistorialGanancia;
import negocio.IngresosPorPedidos;
import negocio.IngresosPorVentas;
import negocio.ItemCotizacion;
import negocio.ItemFactura;
import negocio.ItemHistorial;
import negocio.ItemListaPrecios;
import negocio.ItemOrdenCompra;
import negocio.ItemPedido;
import negocio.ItemRemito;
import negocio.ListaDePrecios;
import negocio.Ofertas;
import negocio.OficinaDeVenta;
import negocio.OrdenCompra;
import negocio.Pedido;
import negocio.PoliticaBeneficio;
import negocio.PoliticaStock;
import negocio.Politicas;
import negocio.PorCantidad;
import negocio.PorFormaDePago;
import negocio.PorHistorial;
import negocio.PorMonto;
import negocio.PorStock;
import negocio.Proveedor;
import negocio.Remito;
import negocio.Rodamiento;
import negocio.Salidas;
import negocio.Stock;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {
	private static final SessionFactory sessionFactory;
	static {
		try {
			AnnotationConfiguration config = new AnnotationConfiguration();
			config.addAnnotatedClass(CasaCentral.class);
			config.addAnnotatedClass(Cliente.class);
			config.addAnnotatedClass(ComparativaPrecios.class);
			config.addAnnotatedClass(CondicionDePago.class);
			config.addAnnotatedClass(Cotizacion.class);
			config.addAnnotatedClass(Descuentos.class);
			config.addAnnotatedClass(Factura.class);
			config.addAnnotatedClass(General.class);
			config.addAnnotatedClass(HistorialGanancia.class);
			config.addAnnotatedClass(IngresosPorPedidos.class);
			config.addAnnotatedClass(IngresosPorVentas.class);
			config.addAnnotatedClass(ItemCotizacion.class);
			config.addAnnotatedClass(ItemFactura.class);
			config.addAnnotatedClass(ItemHistorial.class);
			config.addAnnotatedClass(ItemListaPrecios.class);
			config.addAnnotatedClass(ItemOrdenCompra.class);
			config.addAnnotatedClass(ItemPedido.class);
			config.addAnnotatedClass(ItemRemito.class);
			config.addAnnotatedClass(ListaDePrecios.class);
			config.addAnnotatedClass(Ofertas.class);
			config.addAnnotatedClass(OficinaDeVenta.class);
			config.addAnnotatedClass(OrdenCompra.class);
			config.addAnnotatedClass(Pedido.class);
			config.addAnnotatedClass(PoliticaBeneficio.class);
			config.addAnnotatedClass(Politicas.class);
			config.addAnnotatedClass(PoliticaStock.class);
			config.addAnnotatedClass(PorCantidad.class);
			config.addAnnotatedClass(PorFormaDePago.class);
			config.addAnnotatedClass(PorHistorial.class);
			config.addAnnotatedClass(PorMonto.class);
			config.addAnnotatedClass(PorStock.class);
			config.addAnnotatedClass(Proveedor.class);
			config.addAnnotatedClass(Remito.class);
			config.addAnnotatedClass(Rodamiento.class);
			config.addAnnotatedClass(Salidas.class);
			config.addAnnotatedClass(Stock.class);
			sessionFactory = config.buildSessionFactory();
		} catch (Throwable ex) {
			System.err.println("Initial SessionFactory creation failed." + ex);
			throw new ExceptionInInitializerError(ex);
		}
	}

	public static Session getSession() throws HibernateException {
		return sessionFactory.openSession();
	}

	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}
}
